//using System;
//using System.Runtime.InteropServices;
//using System.Timers;

//namespace worktime
//{
//    public class ClientIdleHandler
//    {
//        private Timer myTimer = new Timer(5000);

//        [DllImport("user32.dll")]
//        static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

//        public event EventHandler OnUserActivityHappened;

//        internal struct LASTINPUTINFO
//        {
//            public uint cbSize;
//            public uint dwTime;
//        }

//        private static uint lastIdleTime = 0;
//        public static bool bActive = true;

//        private static LASTINPUTINFO plii = new LASTINPUTINFO();

//        public ClientIdleHandler()
//        {
//            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
//            myTimer.Enabled = true;
//        }

//        void myTimer_Elapsed(object sender, ElapsedEventArgs e)
//        {
//            plii.cbSize = sizeof(uint)*2;
//            GetLastInputInfo(ref plii);

//            if (lastIdleTime != plii.dwTime)
//            {
//                lastIdleTime = plii.dwTime;
//                bActive = true;
//            }
//            else
//            {
//                bActive = false;
//            }
//        }
//    }
//}